import os

def write_absolute_paths_to_txt(
    output_file="../file_absolute_paths.txt",
    include_subfolders=True,
    skip_empty_folders=True
):
    """
    将当前文件夹中所有文件的绝对路径写入TXT文档
    
    参数:
        output_file: 输出的TXT文件名（默认：file_absolute_paths.txt）
        include_subfolders: 是否包含子文件夹中的文件（默认：True）
        skip_empty_folders: 是否跳过空文件夹（默认：True）
    """
    # 获取当前脚本所在的文件夹路径（即当前工作目录）
    current_dir = os.getcwd()
    
    # 存储所有文件的绝对路径
    file_paths = []
    
    # 遍历文件夹
    if include_subfolders:
        # 递归遍历所有子文件夹
        for root, dirs, files in os.walk(current_dir):
            # 如果不跳过空文件夹，即使没有文件也记录文件夹路径
            if not skip_empty_folders and not files:
                file_paths.append(f"[空文件夹] {root}")
            
            # 收集所有文件的绝对路径
            for file in files:
                absolute_path = os.path.abspath(os.path.join(root, file))
                file_paths.append(absolute_path)
    else:
        # 只遍历当前文件夹，不包含子文件夹
        for item in os.listdir(current_dir):
            item_path = os.path.join(current_dir, item)
            # 只保留文件（排除文件夹）
            if os.path.isfile(item_path):
                absolute_path = os.path.abspath(item_path)
                file_paths.append(absolute_path)
            # 如果不跳过空文件夹，记录当前文件夹下的空文件夹
            elif not skip_empty_folders and os.path.isdir(item_path) and not os.listdir(item_path):
                file_paths.append(f"[空文件夹] {os.path.abspath(item_path)}")
    
    # 写入TXT文件
    with open(output_file, "w", encoding="utf-8") as f:
        # 写入头部信息
        f.write(f"=== 文件绝对路径列表 ===\n")
        f.write(f"生成时间: {os.popen('date /t').read().strip()} {os.popen('time /t').read().strip()}\n")
        f.write(f"扫描文件夹: {current_dir}\n")
        f.write(f"包含子文件夹: {'是' if include_subfolders else '否'}\n")
        f.write(f"文件总数: {len([p for p in file_paths if not p.startswith('[空文件夹]')])}\n")
        f.write(f"空文件夹数: {len([p for p in file_paths if p.startswith('[空文件夹]')])}\n")
        f.write(f"========================\n\n")
        
        # 写入所有路径
        for path in file_paths:
            f.write(path + "\n")
    
    print(f"✅ 操作完成！")
    print(f"📁 结果已保存到: {os.path.abspath(output_file)}")
    print(f"📊 统计信息:")
    print(f"   - 扫描文件夹: {current_dir}")
    print(f"   - 包含子文件夹: {'是' if include_subfolders else '否'}")
    print(f"   - 生成文件数: {len([p for p in file_paths if not p.startswith('[空文件夹]')])}")
    print(f"   - 空文件夹数: {len([p for p in file_paths if p.startswith('[空文件夹]')])}")

if __name__ == "__main__":
    # 调用函数，使用默认参数（包含子文件夹）
    # 如需不包含子文件夹，可改为：write_absolute_paths_to_txt(include_subfolders=False)
    write_absolute_paths_to_txt()